#include "sprites.h"

cSprite::cSprite()
{
	
}

void cSprite::CrearSprite(int ancho,int alto,int posicionX,int posicionY, int grupo,int noImagenGrupo)
{
	imagen=SDL_CreateRGBSurface(SDL_SWSURFACE, ancho,alto, 32,0x0000ff00 ,
													0x00ff0000 ,0xff000000 ,0x000000ff);
}

void cSprite::ClonarSprite(SDL_Surface *Origen)
{
	imagen=SDL_CreateRGBSurfaceFrom(Origen->pixels,Origen->w,Origen->h,
				Origen->format->BitsPerPixel,Origen->pitch,0x0000ff00,0x00ff0000 ,0xff000000 ,0x000000ff);
}

int cSprite::CargarSprite(char *NombreSprite,int POSICIONX,int POSICIONY, int GRUPO,int NOIMAGENGRUPO)
{
	Uint32 colorkey;
	imagen=IMG_Load(NombreSprite);
	colorkey = SDL_MapRGB(imagen->format, 255, 0, 255);
	SDL_SetColorKey(imagen, SDL_SRCCOLORKEY|SDL_RLEACCEL, colorkey);
	alto=imagen->h;
	ancho=imagen->w;
	grupo=GRUPO;
	posicionX=POSICIONX;
	posicionY=POSICIONY;
	grupo=GRUPO;
	noImagenGrupo=NOIMAGENGRUPO;
	/*	validacion	*/
return 0;
}

SDL_Surface *cSprite::LeerSprite()
{
	return imagen;
}

cSprite::~cSprite()
{

}

void cSprite::PutPixel(int x, int y, Uint8 rojo,Uint8 verde,Uint8 azul)
{
	Uint32 pixel=SDL_MapRGB(imagen->format,rojo ,verde,azul);
	int bpp = imagen->format->BytesPerPixel;
    Uint8 *p = (Uint8 *)imagen->pixels + y * imagen->pitch + x * bpp;

    switch(bpp)
	{
    case 1:
        *p = pixel;
        break;
    case 2:
        *(Uint16 *)p = pixel;
        break;
    case 3:
        if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
            p[0] = (pixel >> 16) & 0xff;
            p[1] = (pixel >> 8) & 0xff;
            p[2] = pixel & 0xff;
        } else {
            p[0] = pixel & 0xff;
            p[1] = (pixel >> 8) & 0xff;
            p[2] = (pixel >> 16) & 0xff;
        }
        break;
    case 4:
        *(Uint32 *)p = pixel;
        break;
    }
	
}

SDL_Surface * cSprite::AplicarTransparencia(int rojo, int verde, int azul)
{
	Uint32 colorkey;
	colorkey = SDL_MapRGB(imagen->format, rojo, verde, azul);
	SDL_SetColorKey(imagen, SDL_SRCCOLORKEY|SDL_RLEACCEL, colorkey);
	imagen=SDL_DisplayFormat(imagen);
	return imagen;
}
